package com.itheima.mp.domain.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonValue;
import com.itheima.mp.enums.UserStatus;
import lombok.Data;

import java.time.LocalDateTime;

@Data
@TableName(value = "user",autoResultMap = true)
public class User {

    /**
     * 用户id
     */
    /**
     * 使用MyBatis-Plus框架中的@TableId注解来标识主键字段
     * value属性指定数据库表中对应的字段名为"id"
     * type属性指定主键的生成策略为IdType.AUTO，表示由数据库自动生成
     * ASSIGN_ID表示主键由MyBatis-Plus框架自动生成，并赋值给id属性
     * AUTO表示主键由MyBatis-Plus框架自动生成，并赋值给id属性，且主键值不允许修改
     * INPUT表示主键由用户输入，并赋值给id属性，主键值不允许修改
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id; // 定义一个Long类型的私有属性id，作为实体类的主键字段

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 注册手机号
     */
    private String phone;

    /**
     * 详细信息
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private UserInfo info;

    /**
     * 使用状态（1正常 2冻结）
     */
    private UserStatus status;

    /**
     * 账户余额
     */
    private Integer balance;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
